package yl.hs.bmipfull.daos.salemanage;

import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import yl.hs.bmipfull.daos.BaseDao;
import yl.hs.bmipfull.pojo.salemanage.CustomerInfoEntity;

import java.util.List;
import java.util.Map;

/**
 * ICustomerInfoDao
 * @category
 * @author 谢景广
 * @date 2021-05-17
 */
@Repository
public interface ICustomerInfoDao extends BaseDao<CustomerInfoEntity> {

    /**
     * 根据条件查询客户信息数量统计
     * @param queryParam 查询条件
     * @param tagSNArray 标签编号
     * @param filters 筛选条件
     * @return 客户信息-List<{@link CustomerInfoEntity}>
     */
    Integer queryCountByCondition(@Param("queryParam")Map<String, Object> queryParam,String[] tagSNArray,@Param("filters") List<Map<String,Object>> filters);

    /**
     * 根据条件查询客户信息
     * @param queryParam 查询条件
     * @param tagSNArray 标签编号
     * @param filters 筛选条件
     * @return 客户信息-List<{@link CustomerInfoEntity}>
     */
    List<CustomerInfoEntity> queryListByCondition(@Param("queryParam") Map<String, Object> queryParam,String[] tagSNArray,@Param("filters") List<Map<String,Object>> filters);

    /**
     * 根据客户编号数组删除客户信息
     * @param snArray 客户编号数组
     * @return
     */
    Integer deleteCustomers(String[] snArray);

    /**
     * 根据客户编号查询客户名称
     * @param CustomerSN
     * @return
     */
    String selCustomerNameBySn(@Param("CustomerSN")String CustomerSN);

    /**
     * 获取客户信息
     * @param tagSNArray 标签
     * @return 客户信息-List<{@link CustomerInfoEntity}>
     */
    List<CustomerInfoEntity> queryList(Short state,String[] tagSNArray);

    /**
     * 根据客户名获取客户信息
     * @param customerName 客户名
     * @return 客户信息
     */
    CustomerInfoEntity findByName(String customerName,String sn);

    /**
     * 根据客户编号修改状态
     * @param snArray 客户编号数组
     * @param state 修改状态
     * @return 受影响行数
     */
    Integer changeStateBySn(String[] snArray,short state);

    @Select("select count(0) from customer_info where state >= 0")
    Integer getAllCount();
    List<CustomerInfoEntity> queryListBySnList(@Param("snList") List<String> toList);
}
